package com.yzkj.siot.facade;

import com.yzkj.siot.domain.AdminTenant;
import com.yzkj.siot.req.TenantRegisterReq;
import com.yzkj.siot.req.TenantRegisterVerifyCodeReq;
import com.yzkj.siot.vo.LoginResponse;

public interface AuthFacade {

    /**
     * 租户端-登录
     *
     * @param userName    用户名
     * @param password    密码
     * @param tenantAlias 租户标识
     * @return {@link LoginResponse}
     */
    LoginResponse tenantLogin(String userName, String password, String tenantAlias);

    /**
     * 管理后台-登录
     *
     * @param nickName 用户名
     * @param password 密码
     * @return {@link LoginResponse}
     */
    LoginResponse adminLogin(String nickName, String password);

    /**
     * 租户用户修改密码
     *
     * @param oldPwd 旧密码
     * @param newPwd 新密码
     * @return Boolean
     */
    Boolean tenantUpdatePwd(String oldPwd, String newPwd);

    /**
     * 网关获取token
     *
     * @param tenantAlias 租户标识
     * @param tenantPwd   租户密码
     * @return {@link LoginResponse}
     */
    LoginResponse getGatewayToken(String tenantAlias, String tenantPwd);

    /**
     * 租户注册，通过邮箱发送验证码
     * 
     * @param tenantRegisterVerifyCodeReq
     * @return {@link Boolean}
     */
	Boolean tenantRegisterCreateVerifyCode(TenantRegisterVerifyCodeReq tenantRegisterVerifyCodeReq);

	/**
	 * 租户开通
	 * @param tenantRegisterReq
	 * @return {@link Boolean}
	 */
	AdminTenant tenantRegister(TenantRegisterReq tenantRegisterReq);
}
